<?php

# -- DÉBUT NOTE DE LICENCE -------------------------------------
#
# Ce fichier fait partie de Clicpage.
#
# Copyright (c) 2010 Francois (www.clicpage.net)
# Distribué selon les termes de la licence GPL version 2.0.
# Consultez le fichier LICENCE ou
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- FIN NOTE DE LICENCE ---------------------------------------

class generateurConnexion extends cpGenerateur
{

	
	
	
	
	/// @name Administration
	//@{
	
	
	public function preparerModule($module)
	{

		# Vérification des permissions
		if(	$this->core->auth->verifierPermission('pages') &&
			($this->page->utilisateur_id == $this->core->auth->getUtilisateurID() ||
			 $this->core->auth->verifierPermission('toutesPages') )
		)
		{
			
			# Boutons d'action
			if($this->core->auth->verifierPermission('publierPage')) {
				$module->ajouterBoutonAction(__('Publier'), '#', 'boutonAction_publier');
			}
			$module->ajouterBoutonAction(__('Enregistrer comme brouillon'), '#', 'boutonAction_enregistrer');
			
			# Actions autorisées
			$module->setActionsAutorisees(
				'enregistrerPage',
				'publierPage',
				'restaurerPage'
			);
		}
		
		# Bouton d'action «Aperçu»
		$module->ajouterBoutonAction(__('Aperçu'), '#', 'boutonAction_apercu');
		
		$module->setCSS('modifierPage');
		$module->setJavascript('modifierPage,modifierPage_connexion');
		
	}
	
	
	public function action_enregistrerPage($module)
	{

		if($this->page->page_id != $_POST['page_id']) {
			return;
		}
		
		# Début de la transaction
		$this->core->con->begin();
		
		try {
			
			# Vérification de creer_utilisateur_groupe_id
			$groupe = $this->core->site->getGroupesUtilisateurs(array(
				'groupe_id' => (integer) $_POST['creer_utilisateur_groupe_id'],
				'limit'		=> 1
			), CP_GET_RS);
			
			if($groupe->isEmpty()) {
				throw new cpErreur(__('Cette clé n\'existe pas dans la base de données.'), 'creer_utilisateur_groupe_id', 103);
			}
			
			# Curseur
			$cur = $this->core->con->openCursor($this->core->prefix.'temp_pages');
			$cur->page_titre		= $_POST['page_titre'];
			$cur->page_options		= array(
				'modifier_utilisateur'		=> (boolean) $_POST['modifier_utilisateur'],
				'creer_utilisateur'			=> (boolean) $_POST['creer_utilisateur'],
				'creer_utilisateur_groupe_id'=> (integer)$_POST['creer_utilisateur_groupe_id'],
				'prenom_obligatoire'		=> (boolean) $_POST['prenom_obligatoire'],
				'nom_obligatoire'			=> (boolean) $_POST['nom_obligatoire'],
				'nom_utilisateur_email'		=> (boolean) $_POST['nom_utilisateur_email'],
				'pseudonyme'				=> (boolean) $_POST['pseudonyme']
			);
			
			# Propriétés communes à toutes les pages
			$this->adminProprietesEnregistrer($cur, $_POST, array('page_format','page_commentaires','affiche_meta','page_acces','tags'));
					
			# Enregistrer les données
			$this->page->enregistrer($cur);
			
			$module->messageOK(__('Le brouillon a été enregistré avec succès.'));
			
			# Fin de la transaction
			$this->core->con->commit();
		} catch(Exception $e) {
			$this->core->con->rollback();
			throw $e;
		}

	}
	
	
	public function action_publierPage($module)
	{
		
		# Permission nécessaire: publierPage
		$this->core->auth->verifierPermission('publierPage', true);
		
		$this->action_enregistrerPage($module);
		$this->page->publier();
		
		$module->messageOK(__('La page a été publiée avec succès.'));
		
	}
	
	
	public function action_restaurerPage($module)
	{
		$this->page->restaurer();
		$module->messageOK(__('La page a été restaurée avec succès.'));
	}
	
	
	public function adminBody($module)
	{

		# Combo groupes d'utilisateurs
		$groupesUtilisateurs = $this->core->site->getGroupesUtilisateurs(array(), CP_GET_RS);
		$groupesCombo = array();
		while($groupesUtilisateurs->fetch()) {
			$groupesCombo[$groupesUtilisateurs->groupe_nom] = $groupesUtilisateurs->groupe_id;
		}
		
		# Valeur des champs de formulaire
		if(!$module->erreursFormulairePresentes())
		{
			$page_titre 			= $this->page->page_titre;	
			$modifier_utilisateur 	= (boolean) $this->page->page_options['modifier_utilisateur'];
			$creer_utilisateur 		= (boolean) $this->page->page_options['creer_utilisateur'];
			$creer_utilisateur_groupe_id = (integer) $this->page->page_options['creer_utilisateur_groupe_id'];
			$prenom_obligatoire 	= (boolean) $this->page->page_options['prenom_obligatoire'];
			$nom_obligatoire 		= (boolean) $this->page->page_options['nom_obligatoire'];
			$nom_utilisateur_email	= (boolean) $this->page->page_options['nom_utilisateur_email'];
			$pseudonyme				= (boolean) $this->page->page_options['pseudonyme'];
		}
		else
		{
			$page_titre 			= $_POST['page_titre'];		
			$modifier_utilisateur 	= (boolean) $_POST['modifier_utilisateur'];
			$creer_utilisateur 		= (boolean) $_POST['creer_utilisateur'];
			$creer_utilisateur_groupe_id = (integer) $_POST['creer_utilisateur_groupe_id'];
			$prenom_obligatoire 	= (boolean) $_POST['prenom_obligatoire'];
			$nom_obligatoire 		= (boolean) $_POST['nom_obligatoire'];
			$nom_utilisateur_email	= (boolean) $_POST['nom_utilisateur_email'];
			$pseudonyme				= (boolean) $_POST['pseudonyme'];
		}
		
		# HTML de l'interface
		$html =
			'<form id="modifierPage" method="post" action="index.php?module=modifierPage&page_id='.$this->page->page_id.'">'.
				form::hidden('page_id', $this->page->page_id).
				form::hidden('nonce_enregistrer', $this->core->genererNonce('enregistrerPage')).
				form::hidden('nonce_publier', $this->core->genererNonce('publierPage')).
				form::hidden('nonce', '').
				form::hidden('action', '').
				form::hidden('apercu', '0').
				'<div id="modifierPage_gauche">'.
					$module->afficherMessages().
					'<p class="onTop">'.
						'<label for="page_titre">'.__('Titre').'</label>'.
						$module->field('page_titre', 40, 250, html::escapeHTML($page_titre)).
					'</p>'.
					'<fieldset>'.
					'<legend>'.__('Avancé').'</legend>'.
					'<p>'.
						form::checkbox('modifier_utilisateur', '1', $modifier_utilisateur).
						__('L\'utilisateur peut modifier son compte.').
					'</p>'.
					'<p>'.
						form::checkbox('creer_utilisateur', '1', $creer_utilisateur).
						sprintf(__('Le visiteur peut se créer un compte dans le groupe %s'), 
						$module->combo('creer_utilisateur_groupe_id', $groupesCombo, $creer_utilisateur_groupe_id)).
					'</p>'.
					'<p>'.
						form::checkbox('prenom_obligatoire', '1', $prenom_obligatoire).
						__('Prénom obligatoire').
					'</p>'.
					'<p>'.
						form::checkbox('nom_obligatoire', '1', $nom_obligatoire).
						__('Nom obligatoire').
					'</p>'.
					'<p>'.
						form::checkbox('nom_utilisateur_email', '1',$nom_utilisateur_email).
						__('Utiliser l\'adresse électronique comme nom d\'utilisateur').
					'</p>'.
					'<p>'.
						form::checkbox('pseudonyme', '1', $pseudonyme).
						__('Demander un pseudonyme').
					'</p>'.
					'</fieldset>'.
				'</div>'.
				'<div id="modifierPage_droite">'.$this->adminProprietesHTML($module, array('page_format','page_commentaires','affiche_meta','page_acces','tags')).'</div>'.
			'</form>';
		
		return $html;
	
	}
	
	
	public function curseurNouvellePage($cur)
	{
		
		parent::curseurNouvellePage($cur);
		
		$cur->page_commentaires = CP_COMMENTAIRES_DESACTIVES;
		$cur->page_options = array_merge($cur->page_options, array(
			'modifier_utilisateur'		=> true,
			'creer_utilisateur'			=> false,
			'creer_utilisateur_groupe_id'=> 3,
			'prenom_obligatoire'		=> false,
			'nom_obligatoire'			=> false,
			'nom_utilisateur_email'		=> false,
			'pseudonyme'				=> true
		));
		$cur->page_mots = implode(' ', text::splitWords(text::toUTF8(html_entity_decode(html::clean($cur->page_titre)))));
		
	}
	//@}
	
	
	
	
	/// @name Public
	//@{
		
	
	protected $mode;
	protected $utilisateurCree;
	protected $msgErreur = '';
	protected $urlComplete = '';
	
	
	public function initPublic()
	{

		$this->urlComplete = CP_URL_PUBLIQUE.$this->page->page_url;
		
		$mode = $_GET[1];
		$this->mode = !empty($mode) ? $mode : 'connexion';
		
		switch($this->mode):
		
		# Connexion / déconnexion		
		case connexion:
		
			# Déconnexion
			if($_GET['deconnexion'] == '1' && $this->core->auth->estConnecte())
			{
				$this->core->auth->deconnecterUtilisateur();
				http::redirect($this->urlComplete.'?deconnexion=1');
			}
			
			# Connexion
			if(	$_POST['action'] == 'connexion' &&
				$this->core->verifierNonce('public_connexion', $_POST['nonce']) &&
				$this->core->auth->verifierSession()
			)
			{
				if(empty($_POST['nom_utilisateur']) || empty($_POST['mot_de_passe'])) {
					$this->msgErreur = __('Vous devez spécifier un nom d\'utilisateur et un mot de passe.');
				}
				elseif($this->core->auth->connecterUtilisateur($_POST['nom_utilisateur'], $_POST['mot_de_passe'], (boolean) $_POST['se_souvenir'])) {
					$this->core->detruireNonce('public_connexion');
					http::redirect($this->urlComplete);
				}
				else{
					$this->msgErreur = __('Nom d\'utilisateur ou mot de passe invalide.');
				}
			}
			
			# Messages
			if($_GET['deconnexion'] == '1') {
				$this->msg = __('Vous avez été déconnecté correctement.');
			} elseif($_GET['activation'] == '1') {
				$this->msg = __('Votre compte a été activé. Vous pouvez maintenant vous connecter via ce formulaire.');
			}
			
			$this->core->detruireNonce('public_connexion');
			
		break;
		
		# Créer / modifier un compte
		case compte:
			
			if(	(   $this->core->auth->estConnecte() && !$this->page->page_options['modifier_utilisateur']   ) ||
				(   !$this->core->auth->estConnecte() && !$this->page->page_options['creer_utilisateur']   )   )
			{
				cpPublic::erreur404();
			}
			
			if(!$this->page->page_options['pseudonyme']) {
				$_POST['utilisateur_pseudo'] = $_POST['utilisateur_prenom'].' '.$_POST['utilisateur_nom'];
				if($_POST['utilisateur_pseudo'] == ' ') {
					$_POST['utilisateur_pseudo'] = '---';
				}
			}
			
			try {
			
				# Modifier compte
				if(	$this->core->auth->estConnecte() && 
					$_POST['action'] == 'modifierUtilisateur' &&
					$this->core->verifierNonce('public_modifierUtilisateur', $_POST['nonce'])
				) {
					
					# Champs obligatoires
					if($this->page->page_options['prenom_obligatoire'] && empty($_POST['utilisateur_prenom'])) {
						throw new cpErreur(__('Vous devez indiquer un prénom.'), 'utilisateur_prenom', 101);
					}
					
					if($this->page->page_options['nom_obligatoire'] && empty($_POST['utilisateur_nom'])) {
						throw new cpErreur(__('Vous devez indiquer un nom.'), 'utilisateur_nom', 101);
					}
					
					if(empty($_POST['utilisateur_email'])) {
						throw new cpErreur(__('Vous devez indiquer une adresse électronique.'), 'utilisateur_email', 101);
					}
					
					# Mot de passe	
					if($_POST['utilisateur_mot_de_passe_1'] != $_POST['utilisateur_mot_de_passe_2']) {
						throw new cpErreur(__('Les deux mots de passe spécifiés ne correspondent pas.'), 'utilisateur_mot_de_passe_2', 109);
					}
					
					# Enregistrer
					$cur = $this->core->con->openCursor($this->core->prefix.'utilisateurs');
					$cur->utilisateur_login				= $_POST['utilisateur_login'];
					$cur->utilisateur_prenom			= $_POST['utilisateur_prenom'];
					$cur->utilisateur_nom				= $_POST['utilisateur_nom'];
					$cur->utilisateur_pseudo			= $_POST['utilisateur_pseudo'];
					$cur->utilisateur_email				= $_POST['utilisateur_email'];
					$cur->utilisateur_langue			= $_POST['utilisateur_langue'];
					
					if($_POST['utilisateur_mot_de_passe_1'] != '') {
						$cur->utilisateur_mot_de_passe	= crypt::hmac(CP_MASTER_KEY,$_POST['utilisateur_mot_de_passe_1']);
					}

					# Nom d'utilisateur = email?
					if($this->page->page_options['nom_utilisateur_email'])
					{
						$cur->utilisateur_login = $_POST['utilisateur_email'];	
					}
					
					try {
						$this->core->auth->utilisateur->enregistrer($cur);
					} catch(cpErreur $e) {
						if($e->getChamp() == 'utilisateur_login' && $this->page->page_options['nom_utilisateur_email']) {
							throw new cpErreur($e->getMessage, 'utilisateur_email', $e->getCode());
						} else {
							throw $e;
						}
					}
					
					$this->messageOK(__('Les paramètres de votre compte ont été mis à jour avec succès.'));
					
				}
				# Créer compte
				elseif(	!$this->core->auth->estConnecte() && 
					$_POST['action'] == 'creerUtilisateur' &&
					$this->core->verifierNonce('public_creerUtilisateur', $_POST['nonce'])
				) {
					
					# Champs obligatoires
					if($this->page->page_options['prenom_obligatoire'] && empty($_POST['utilisateur_prenom'])) {
						throw new cpErreur(__('Vous devez indiquer un prénom.'), 'utilisateur_prenom', 101);
					}
					
					if($this->page->page_options['nom_obligatoire'] && empty($_POST['utilisateur_nom'])) {
						throw new cpErreur(__('Vous devez indiquer un nom.'), 'utilisateur_nom', 101);
					}
					
					if(empty($_POST['utilisateur_email'])) {
						throw new cpErreur(__('Vous devez indiquer une adresse électronique.'), 'utilisateur_email', 101);
					}
					
					# Mot de passe
					if($_POST['utilisateur_mot_de_passe_1'] == '') {
						throw new cpErreur(__('Vous devez indiquer un mot de passe.'), 'utilisateur_mot_de_passe_1', 101);
					}
					
					if($_POST['utilisateur_mot_de_passe_1'] != $_POST['utilisateur_mot_de_passe_2']) {
						throw new cpErreur(__('Les deux mots de passe spécifiés ne correspondent pas.'), 'utilisateur_mot_de_passe_2', 109);
					}
					
					# Créer l'utilisateur
					$cle = sha1(uniqid(rand(),true));
					
					$cur = $this->core->con->openCursor($this->core->prefix.'utilisateurs');
					$cur->utilisateur_superadmin		= 0;
					$cur->groupe_id						= (integer) $this->page->page_options['creer_utilisateur_groupe_id'];
					$cur->utilisateur_login				= $_POST['utilisateur_login'];
					$cur->utilisateur_mot_de_passe		= crypt::hmac(CP_MASTER_KEY,$_POST['utilisateur_mot_de_passe_1']);
					$cur->utilisateur_prenom			= $_POST['utilisateur_prenom'];
					$cur->utilisateur_nom				= $_POST['utilisateur_nom'];
					$cur->utilisateur_pseudo			= $_POST['utilisateur_pseudo'];
					$cur->utilisateur_email				= $_POST['utilisateur_email'];
					$cur->utilisateur_langue			= $_POST['utilisateur_langue'];
					$cur->utilisateur_statut			= CP_UTILISATEUR_TEMP;
					$cur->utilisateur_cle				= serialize(array('activation' => $cle));
					
					# Nom d'utilisateur = email?
					if($this->page->page_options['nom_utilisateur_email'])
					{
						$cur->utilisateur_login = $_POST['utilisateur_email'];	
					}
					
					try {
						$utilisateur = $this->core->site->creerUtilisateur($cur);
					} catch(cpErreur $e) {
						if($e->getChamp() == 'utilisateur_login' && $this->page->page_options['nom_utilisateur_email']) {
							throw new cpErreur($e->getMessage(), 'utilisateur_email', $e->getCode());
						} else {
							throw $e;
						}
					}
					
					# Envoyer email
					$site_titre = $this->core->site->getPropriete('site_titre');
					$objet = mail::B64Header(sprintf(__('Création de compte «%s»'), $site_titre));
					$message = sprintf(__('Vous avez créé un compte sur le site %s. Pour l\'activer, visitez l\'adresse ci-dessous.'), $site_titre).
					"\n".$this->urlComplete.',activer?cle='.$cle.'&utilisateur_login='.rawurlencode($utilisateur->utilisateur_login)."\n\n".
					sprintf(__('Rappel: Votre nom d\'utilisateur est %s.'), $utilisateur->utilisateur_login);
					
					$headers[] = 'From: clicpage@'.$_SERVER['HTTP_HOST'];
					$headers[] = 'Content-Type: text/plain; charset=UTF-8;';		
					
					mail::sendMail($_POST['utilisateur_email'],$objet,$message,$headers);
					
					$this->utilisateurCree = true;
					
				}
				
			} catch(Exception $e) {

				if($e->getCode() >= 100 && $e->getCode() <= 199) {
					$this->ajouterErreurFormulaire($e->getChamp(), $e->getMessage());
				} else {
					$this->erreurGenerale($e->getMessage());
				}
			}
			
			$this->core->detruireNonce('public_creerUtilisateur');
			$this->core->detruireNonce('public_modifierUtilisateur');
			
		break;
		
		# Activation de compte
		case activer:
			
			$utilisateur_login = $_GET['utilisateur_login'];
			$utilisateur_cle = $_GET['cle'];
			
			if(empty($utilisateur_login) || empty($utilisateur_cle)) {
				http::head(400);
				http::redirect($this->urlComplete);
			}
			
			$rs = $this->core->site->getUtilisateurs(array(
				'utilisateur_login' => $utilisateur_login,
				'utilisateur_statut' => CP_UTILISATEUR_TEMP
			), CP_GET_RS);
			
			$cleDB = unserialize($rs->utilisateur_cle);
			
			if($rs->isEmpty() || $cleDB['activation'] == '' || $cleDB['activation'] != $utilisateur_cle) {
				$this->msgErreur = __('Clé invalide');
			} else {
				
				# Activation
				$cur = $this->core->con->openCursor($this->core->prefix.'utilisateurs');
				$cur->utilisateur_statut = CP_UTILISATEUR_ACTIF;
				$cur->utilisateur_cle = null;
				$cur->update('WHERE utilisateur_id = '.(integer) $rs->utilisateur_id);
				
				# Redirection
				http::redirect($this->urlComplete.'?activation=1');
			}
			
		break;
		
		default:
			cpPublic::erreur404();
		break;
		
		endswitch;
		
		$_SESSION['sess_browser_uid'] = http::browserUID(CP_MASTER_KEY);
		
	}

	public function public_contenu()
	{
		
		switch($this->mode):
		
		# Connexion
		case connexion:
		
			if($this->core->auth->estConnecte())
			{
				$html =
					'<p>'.sprintf(__('Vous êtes connecté en tant que %s.'), '<strong>'.html::escapeHTML($this->core->auth->utilisateur->utilisateur_login).'</strong>').'</p>'.
					'<ul class="connexion-options-connecte">'.
						'<li><a href="'.$this->urlComplete.'?deconnexion=1">'.__('Déconnexion').'</a></li>';
				
				if($this->page->page_options['modifier_utilisateur']) {
					$html.=
						'<li><a href="'.$this->urlComplete.',compte">'.__('Mettre à jour votre compte').'</a></li>';
				}
				
				$html.=
					'</ul>';
				
			}
			else
			{
				
				$html =
				'<form class="connexion-formulaire" method="post" action="'.CP_URL_PUBLIQUE.$this->page->page_url.'">';
				
				if($this->msg != '') {
					$html.= '<p><strong>'.$this->msg.'</strong></p>';
				}
				
				$html.=
					form::hidden('action', 'connexion').
					$this->core->nonceHTML('public_connexion');
				
				$html.=
				'<fieldset>'.
					'<legend>'.__('Connexion').'</legend>';
					
				if($this->page->page_options['nom_utilisateur_email'])
				{
					$html.=
					'<p>'.
						'<label for="nom_utilisateur">'.__('Adresse électronique').'</label>'.
						form::field('nom_utilisateur', 25, 50, $nom_utilisateur).
					'</p>';
				}
				else
				{
					$html.=
					'<p>'.
						'<label for="nom_utilisateur">'.__('Nom d\'utilisateur').'</label>'.
						form::field('nom_utilisateur', 25, 50, $nom_utilisateur).
					'</p>';
				}
				
				$html.=
					'<p>'.
						'<label for="mot_de_passe">'.__('Mot de passe').'</label>'.
						form::password('mot_de_passe', 25, 50).
					'</p>';
						
				$html.=
					'<p class="connexion-se-souvenir">'.
						'<label for="se_souvenir">'.__('Se souvenir de moi').'</label>'.
						form::checkbox('se_souvenir', 1, false).
					'</p>';
					
				if(!empty($this->msgErreur)) {
					$html.=
					'<p class="erreur">'.$this->msgErreur.'</p>';	
				}
				
				$html.=
					'<p>'.
						'<input type="submit" value="'.__('Connexion').'"/>'.
					'</p>'.
				'</fieldset>'.
				'</form>';
				
				if($this->page->page_options['creer_utilisateur']) {
					$html.=
					'<p>'.__('Pas encore inscrit?').' <a href="'.CP_URL_PUBLIQUE.$this->page->page_url.',compte">'.__('Créer un nouveau compte').'</a></p>';
				}
				
			}
			
		break;
		
		# Création / modification de compte
		case compte:
			
			# Message de confirmation
			if($this->utilisateurCree)
			{
				return
				$this->afficherMessages().
				'<p><strong>'.__('Votre compte a été créé avec succès.').'</strong></p>'.
				'<p>'.sprintf(__('Afin de l\'activer, vous devez visiter le lien qui vous a été '.
				'envoyé par courrier électronique (%s).'), html::escapeHTML($_POST['utilisateur_email'])).'</p>';
			}
			
			# Formulaire
			
			# Utilisateur existant
			if($this->core->auth->estConnecte())
			{
				$action = 'modifierUtilisateur';
				$label_mot_de_passe_1 = __('Nouveau mot de passe');
				$label_envoyer = __('Enregistrer les modifications');
				
				$nonce = $this->core->genererNonce('public_modifierUtilisateur');
				
				# Valeur des champs de formulaire
				if($this->erreursFormulairePresentes())
				{
					$utilisateur_login			= $_POST['utilisateur_login'];
					$utilisateur_prenom			= $_POST['utilisateur_prenom'];
					$utilisateur_nom			= $_POST['utilisateur_nom'];
					$utilisateur_pseudo			= $_POST['utilisateur_pseudo'];
					$utilisateur_email			= $_POST['utilisateur_email'];
					$utilisateur_langue			= $_POST['utilisateur_langue'];
				}
				else
				{
					$utilisateur_login			= $this->core->auth->utilisateur->utilisateur_login;
					$utilisateur_prenom			= $this->core->auth->utilisateur->utilisateur_prenom;
					$utilisateur_nom			= $this->core->auth->utilisateur->utilisateur_nom;
					$utilisateur_pseudo			= $this->core->auth->utilisateur->utilisateur_pseudo;
					$utilisateur_email			= $this->core->auth->utilisateur->utilisateur_email;
					$utilisateur_langue			= $this->core->auth->utilisateur->utilisateur_langue;
				}
				
			}
			# Nouvel utilisateur
			else
			{
				$action = 'creerUtilisateur';
				$label_mot_de_passe_1 = __('Mot de passe');
				$label_envoyer = __('Créer le compte');
				
				$nonce = $this->core->genererNonce('public_creerUtilisateur');
				
				# Valeur des champs de formulaire
				if($this->erreursFormulairePresentes())
				{
					$utilisateur_login			= $_POST['utilisateur_login'];
					$utilisateur_prenom			= $_POST['utilisateur_prenom'];
					$utilisateur_nom			= $_POST['utilisateur_nom'];
					$utilisateur_pseudo			= $_POST['utilisateur_pseudo'];
					$utilisateur_email			= $_POST['utilisateur_email'];
					$utilisateur_langue			= $_POST['utilisateur_langue'];
				}
				else
				{
					$utilisateur_login			= '';
					$utilisateur_prenom			= '';
					$utilisateur_nom			= '';
					$utilisateur_pseudo			= '';
					$utilisateur_email			= '';
					$utilisateur_langue			= http::getAcceptLanguage();
				}
				
			}
			
			$html =
			'<form class="connexion-formulaire-compte" method="post" action="'.CP_URL_PUBLIQUE.$this->page->page_url.',compte">'.
			form::hidden('action', $action).
			form::hidden('nonce', $nonce).
			$this->afficherMessages().
			'<fieldset>'.
				'<legend>'.__('Informations de connexion').'</legend>';
			
			if($this->page->page_options['nom_utilisateur_email'])
			{
				$html.=
				'<p>'.
					'<label for="utilisateur_email">'.__('Adresse électronique').'</label>'.
					$this->field('utilisateur_email', 40, 50, html::escapeHTML($utilisateur_email)).
				'</p>';
			}
			else
			{
				$html.=
				'<p>'.
					'<label for="utilisateur_login">'.__('Nom d\'utilisateur').'</label>'.
					$this->field('utilisateur_login', 40, 50, html::escapeHTML($utilisateur_login)).
				'</p>';
			}
				
			$html.=
				'<p>'.
					'<label for="utilisateur_mot_de_passe_1">'.$label_mot_de_passe_1.'</label>'.
					$this->password('utilisateur_mot_de_passe_1', 40, 50, '').
				'</p>'.
				'<p>'.
					'<label for="utilisateur_mot_de_passe_2">'.__('Confirmez le mot de passe').'</label>'.
					$this->password('utilisateur_mot_de_passe_2', 40, 50, '').
				'</p>'.
			'</fieldset>'.
			'<fieldset>'.
			'<legend>'.__('Informations personnelles').'</legend>'.
			'<p>'.
				'<label for="utilisateur_prenom">'.__('Prénom').'</label>'.
				$this->field('utilisateur_prenom', 40, 60, html::escapeHTML($utilisateur_prenom)).
			'</p>'.
			'<p>'.
				'<label for="utilisateur_nom">'.__('Nom').'</label>'.
				$this->field('utilisateur_nom', 40, 60, html::escapeHTML($utilisateur_nom)).
			'</p>';
				
			if($this->page->page_options['pseudonyme'])
			{
				$html.=
				'<p>'.
					'<label for="utilisateur_pseudo">'.__('Pseudonyme').'</label>'.
					$this->field('utilisateur_pseudo', 40, 100, html::escapeHTML($utilisateur_pseudo)).
				'</p>';
			}	
				
			if(!$this->page->page_options['nom_utilisateur_email'])
			{
				$html.=
				'<p>'.
					'<label for="utilisateur_email">'.__('Adresse électronique').'</label>'.
					$this->field('utilisateur_email', 40, 150, html::escapeHTML($utilisateur_email)).
				'</p>';
			}
			
			$html.=
			'<p>'.
				'<label for="utilisateur_langue">'.__('Langue').'</label>'.
				$this->combo('utilisateur_langue', $this->core->getComboLangues(), $utilisateur_langue).
			'</p>'.
		'</fieldset>'.
		'<input type="submit" value="'.$label_envoyer.'" />'.
		'</form>';
			
		break;
		
		case activer:
			$html = '<p>'.$this->msgErreur.'</p>';
		break;
		
		endswitch;
		
		return $html;
		
	}
	
	public function public_titre()
	{
		if($this->mode == 'compte') {
			if($this->core->auth->estConnecte()) {
				return __('Mettre à jour votre compte');
			} else {
				return __('Créer un nouveau compte');
			}
		} elseif($this->mode == 'activer') {
			return __('Erreur');
		}
		return $this->page->page_titre;
	}
	
	
	public function affiche_meta()
	{
		return false;
	}
	
	
	public function affiche_tags()
	{
		return false;
	}
	//@}
	
	
}

?>